#include <iostream>
using namespace std;
#include "LecteurPhraseAvecArbre.h"

int main(int argc, char* argv[]) {
   	try{
    char nomFich[255];
    if (argc != 2) {
        cout << "Usage : " << argv[0] << " nom_fichier_source" << endl << endl;
        cout << "Entrez le nom du fichier que voulez-vous interpreter : ";
        cin.getline(nomFich, sizeof (nomFich));
  }  else
		strncpy(nomFich, argv[1], sizeof(nomFich));

	LecteurPhraseAvecArbre lp(nomFich);
	lp.analyse();
  
	cout << endl << "Arbre Abstrait : " << endl;
	cout         << "================"  << endl;
	lp.getArbre()->afficher();
	cout << endl << "Table des symboles avant evaluation : " << lp.getTs();
	cout << endl << "Evaluation de l'arbre (interpretation)..." << endl;
	lp.getArbre()->getValeur();
	cout << endl << "Table des symboles apres evaluation : " << lp.getTs();
        
        string reponse="n";
        cout<<endl<<"Voulez vous compiler et exécuter le programme (o/n) : "<<endl; // C'est curieux, il prends cette commande pour une ligne Bash...
        cin>>reponse;   // Ca m'a enervé, je suis parti... (on a peut etre un souci parce que quand je trouve un string, je regarde pas si il est déclaré pour non, je l'ecris juste en C
        if (reponse=="o"){ // et on aura peut etre besoin de verifier si besoin ou non de le déclarer... Bref, ++.
                 lp.tradC();  
        }
        

        
        
}
        
        catch(int){
            cout<<"Syntaxe incorrect"<<endl;
        }

   /*  try {
        string reponse = "1";
        char nomFich[255];
        strncpy(nomFich, argv[1], sizeof(nomFich));
        LecteurPhraseAvecArbre lp(nomFich);
        while (reponse == "1" || reponse == "2" || reponse == "3" || reponse == "4") {



            cout << " Que voulez vous faire : " << endl;
            cout << "  1. Changer de fichier" << endl;
            cout << "  2. Analyser la synthaxe" << endl;
            cout << "  3. Evaluer l'arbre" << endl;
            cout << "  4. Compiler et exécuter le programme" << endl;
            cout << "  5.Quitter" << endl;

            cin >> reponse;

            if (reponse == "1") {
                cout << "Entrez le nom du fichier que voulez-vous interpreter : ";
                cin.getline(nomFich, sizeof (nomFich));
            }

            if (reponse == "2")
                lp.analyse();

            if (reponse == "3") {
                cout << endl << "Arbre Abstrait : " << endl;
                cout << "================" << endl;
                lp.getArbre()->afficher();
                cout << endl << "Table des symboles avant evaluation : " << lp.getTs();
                cout << endl << "Evaluation de l'arbre (interpretation)..." << endl;
                lp.getArbre()->getValeur();
                cout << endl << "Table des symboles apres evaluation : " << lp.getTs();
            }


            if (reponse == "4") {
                lp.analyse();
                lp.tradC();
            }


        }
    } catch (int) {
        cout << "Syntaxe incorrect" << endl;
    }*/ 

return 0;
}
